﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyGiaoDuc_Winform.ServiceXuLyThongTinKhoa;
using QuanLyGiaoDuc_Winform.ServiceXuLyThongTinMonHoc;
using QuanLyGiaoDuc_Winform.ServiceXuLyThongTinKhoaHoc;

namespace QuanLyGiaoDuc_Winform
{
    public partial class FormMoMonHoc : Form
    {
        public FormMoMonHoc()
        {
            InitializeComponent();
        }

        ServiceXuLyThongTinMonHoc.ServiceXuLyThongTinMonHocSoapClient proxy_monhoc = new ServiceXuLyThongTinMonHoc.ServiceXuLyThongTinMonHocSoapClient();
        ServiceXuLyThongTinKhoa.ServiceXuLyThongTinKhoaSoapClient proxy_khoa = new ServiceXuLyThongTinKhoaSoapClient();
        ServiceXuLyThongTinKhoaHoc.ServiceXuLyThongTinKhoaHocSoapClient proxy_khoahoc = new ServiceXuLyThongTinKhoaHocSoapClient();
        ServiceXuLyThongTinHocPhan.ServiceXuLyThongTinHocPhanSoapClient proxy_hocphan = new ServiceXuLyThongTinHocPhan.ServiceXuLyThongTinHocPhanSoapClient();

        private ServiceXuLyThongTinKhoa.KHOA_getallResult[] arrKhoa;

        public ServiceXuLyThongTinKhoa.KHOA_getallResult[] ArrKhoa
        {
            get { return arrKhoa; }
            set { arrKhoa = value; }
        }

        private ServiceXuLyThongTinMonHoc.MONHOC[] arrMonHoc;

        public ServiceXuLyThongTinMonHoc.MONHOC[] ArrMonHoc
        {
            get { return arrMonHoc; }
            set { arrMonHoc = value; }
        }

        private ServiceXuLyThongTinKhoaHoc.KHOAHOC[] arrKhoaHoc;

        public ServiceXuLyThongTinKhoaHoc.KHOAHOC[] ArrKhoaHoc
        {
            get { return arrKhoaHoc; }
            set { arrKhoaHoc = value; }
        }

        private int _iNamHocBatDau;

        public int INamHocBatDau
        {
            get { return _iNamHocBatDau; }
            set { _iNamHocBatDau = value; }
        }

        private int _iNamHocKetThuc;

        public int INamHocKetThuc
        {
            get { return _iNamHocKetThuc; }
            set { _iNamHocKetThuc = value; }
        }

        private int _iHocKy;

        public int IHocKy
        {
            get { return _iHocKy; }
            set { _iHocKy = value; }
        }

        private int _iNamHoc;

        public int INamHoc
        {
            get { return _iNamHoc; }
            set { _iNamHoc = value; }
        }

        private int _maKhoaHoc;

        public int MaKhoaHoc
        {
            get { return _maKhoaHoc; }
            set { _maKhoaHoc = value; }
        }

        public ServiceXuLyThongTinKhoa.KHOA_getallResult[] loadDanhSachKhoa()
        {
            arrKhoa = null;
            arrKhoa = proxy_khoa.layDanhSachKhoa();
            return arrKhoa;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            tb_NamHoc.Enabled = false;
            tb_HocKi.Enabled = false;
            cbb_KhoaHoc.Enabled = false;
            dataGrid_MonHoc.Enabled = false;

            cbb_Khoa.Items.Clear();
            loadDanhSachKhoa();
            // load danh sach khoa
            foreach (ServiceXuLyThongTinKhoa.KHOA_getallResult khoa in arrKhoa)
            {
                cbb_Khoa.Items.Add(khoa.MAKHOA + ". " + khoa.TENKHOA);
            }
        }

        private void cbb_Khoa_SelectedIndexChanged(object sender, EventArgs e)
        {
            int indexCbbKhoa = cbb_Khoa.SelectedIndex;
            int _indexKhoa = arrKhoa[indexCbbKhoa].MAKHOA;

            arrMonHoc = null;
            arrMonHoc = proxy_monhoc.layDanhSachMonHocVoiMaKhoa(_indexKhoa);
            dataGrid_MonHoc.Enabled = true;
            dataGrid_MonHoc.Rows.Clear();
            for (int i = 0; i < arrMonHoc.Count(); i++)
            {
                dataGrid_MonHoc.Rows.Add(false, arrMonHoc[i].MAMONHOC, arrMonHoc[i].TENMONHOC, arrMonHoc[i].SOTINCHI, arrMonHoc[i].HOCKIMO);
                dataGrid_MonHoc.Rows[i].Tag = arrMonHoc[i];
            }
            cbb_KhoaHoc.Enabled = true;
            cbb_KhoaHoc.Items.Clear();
            // add khóa học vào cbb
            arrKhoaHoc = null;
            arrKhoaHoc = proxy_khoahoc.layDanhSachKhoaHoc();
            foreach (ServiceXuLyThongTinKhoaHoc.KHOAHOC khoahoc in arrKhoaHoc)
            {
                cbb_KhoaHoc.Items.Add(khoahoc.NAMBATDAU);
            }
            tb_HocKi.Enabled = true;
            tb_NamHoc.Enabled = true;
        }

        private void cbb_KhoaHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            _iNamHocBatDau = int.Parse(cbb_KhoaHoc.SelectedItem.ToString());
            _iNamHocKetThuc = _iNamHocBatDau + 4;
            int _iKhoaHoc_Choose = cbb_KhoaHoc.SelectedIndex;
            _maKhoaHoc = arrKhoaHoc[_iKhoaHoc_Choose].MAKHOAHOC;
        }

        private void tb_NamHoc_Leave(object sender, EventArgs e)
        {
            try
            {
                string _sNamHoc = tb_NamHoc.Text.Trim();
                if (_sNamHoc == "")
                {
                    MessageBox.Show("Thiếu thông tin năm học!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                    return;
                }
                _iNamHoc = int.Parse(_sNamHoc);
                if (_iNamHoc > _iNamHocKetThuc || _iNamHoc < _iNamHocBatDau)
                {
                    MessageBox.Show("Thông tin năm học nhập vào không chính xác!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                    return;
                }
            }
            catch
            {
            }
        }

        private void tb_HocKi_Leave(object sender, EventArgs e)
        {
            string _sHocKy = tb_HocKi.Text.Trim();
            if (_sHocKy == "")
            {
                MessageBox.Show("Thiếu thông tin học kỳ!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                return;
            }
            _iHocKy = int.Parse(_sHocKy);
            if (_iHocKy != 1 && _iHocKy != 2)
            {
                MessageBox.Show("Thông tin học kì nhập vào không chính xác!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                return;
            }
        }

        private void dataGrid_MonHoc_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //if (dataGridView_thongtinSV.CurrentRow.Tag != null)
            //{
            //    SinhVienDTO svDuocChon = new SinhVienDTO();
            //    svDuocChon = (SinhVienDTO)dataGridView_thongtinSV.CurrentRow.Tag;
            //    txtMSSV.Text = svDuocChon.MaSinhVien;
            //    txtHoTen.Text = svDuocChon.HoTen;
            //    txtDiaChi.Text = svDuocChon.DiaChi;
            //    dtpNgaySinh.Value = svDuocChon.NgaySinh;
            //    txtLop.Text = svDuocChon.Lop.ToString();
            //}
        }

        private void cb_CheckAllMon_CheckedChanged(object sender, EventArgs e)
        {
            if (cb_CheckAllMon.Checked == true)
            {
                for (int i = 0; i < dataGrid_MonHoc.Rows.Count - 1; i++)
                {
                    dataGrid_MonHoc[0, i].Value = true;
                }
            }
            else
            {
                for (int i = 0; i < dataGrid_MonHoc.Rows.Count - 1; i++)
                {
                    dataGrid_MonHoc[0, i].Value = false;
                }
            }
        }

        private void dataGrid_MonHoc_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if ((bool)dataGrid_MonHoc.Rows[e.RowIndex].Cells[0].Value == false)
            {
                dataGrid_MonHoc[0, e.RowIndex].Value = true;
            }
            else
            {
                dataGrid_MonHoc[0, e.RowIndex].Value = false;
            }
            dataGrid_MonHoc.EndEdit();
        }

        private void btn_Them_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGrid_MonHoc.Rows.Count - 1; i++)
            {
                DataGridViewRow row = dataGrid_MonHoc.Rows[i];

                if ((bool)((row.Cells[0]).Value) == true)
                {
                    int _maMonHoc = int.Parse(row.Cells[1].Value.ToString().Trim());
                    int ketqua = proxy_hocphan.themHocPhanMoMoi(_maKhoaHoc, _maMonHoc, _iNamHoc, _iHocKy);
                    if (ketqua == 0)
                    {
                        string _sMaMonHoc = _maMonHoc.ToString();
                        MessageBox.Show("Có lỗi tại môn" + _sMaMonHoc + "!", "Lỗi", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                        return;
                    }
                }
                else
                {
                }
            }
            MessageBox.Show("Đã thêm các môn học dự kiến mở vào CSDL!", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
        }
    }
}
